/**
 * 
 */
package com.yidu.privilege.Service.impl;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import com.yidu.privilege.Dao.ModuleAndroleMapper;
import com.yidu.privilege.Dao.RoleDao;
import com.yidu.privilege.Domain.ModuleAndrole;
import com.yidu.privilege.Domain.Role;
import com.yidu.privilege.Service.RoleService;
import com.yidu.privilege.vo.RoleVo;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import com.yidu.privilege.Utils.Pages;

import javax.annotation.Resource;

/**
 * @author  kuwang
 * 角色实现类
 */
@Service
public class RoleServiceimpl implements RoleService {
	@Resource
	private RoleDao roleDao;
	@Resource
    ModuleAndroleMapper moduleAndroleMapper;

	/**
	 * 查询所有角色
	 * @param ro 角色
	 * @param pa 分页
	 * @return
	 */
	@Override
	public List<RoleVo> findAll(RoleVo ro, Pages pa) {
		//角色模型
		Role l=new Role();
		//vo转po
		BeanUtils.copyProperties(ro, l);
		//查角色集合
		List<Role>list=roleDao.findAll(l, pa);
		//用户vo集合
		List<RoleVo> list2=new ArrayList<RoleVo>();
		//循环
		for (Iterator iterator = list.iterator(); iterator.hasNext();) {
			//用户
			Role role = (Role) iterator.next();
			//用户vo模型
			RoleVo e=new RoleVo();
			//po转vo
			BeanUtils.copyProperties(role, e);
			//加入数组
			list2.add(e);
		}
		//返回数组
		return list2;
	}

	/**
	 * 增加修改
	 * @param ro
	 * @param shu
	 */
	@Override
	public void savaOrUpdate(RoleVo ro,String shu) {
		//角色模型
		Role l=new Role();
		//vo转po
		BeanUtils.copyProperties(ro, l);
		//设置状态
		l.setRoState("0");
		//判断！
		if(!StringUtils.isEmpty(ro.getRoId())) {
			//删除所有关系
			moduleAndroleMapper.delete(ro.getRoId());
			//修改
			roleDao.update(l);
		}else{
			//增加
			roleDao.add(l);
		}

		//判断！
		if(!StringUtils.isEmpty(shu)) {
			//得到数组
			String arr[]=shu.split(",");
			//循环
			for (int i = 0; i < arr.length; i++) {
				//得到字符串
				String string = arr[i];
				//模块角色模型
				ModuleAndrole af=new ModuleAndrole();
				//加入角色id
				af.setRoId(l.getRoId());
				//加入模块id
				af.setModId(Integer.valueOf(string));
				//增加
				moduleAndroleMapper.insert(af);

			}

		}
		
		
	}

	/**
	 * 查行数
	 * @param ro
	 * @return
	 */
	@Override
	public Long count(RoleVo ro) {
		//角色模型
		Role l=new Role();
		//vo 转po
		BeanUtils.copyProperties(ro, l);
		//查行数
		return (long)roleDao.count(l);
	}

	/**
	 * id查角色
	 * @param id
	 * @return
	 */
	@Override
	public RoleVo findbyid(Integer id) {
		// TODO Auto-generated method stub
		//角色vo模型
		RoleVo vo=new RoleVo();
		//id查询
		Role e=roleDao.findbyid(id);
		//po 转vo
		BeanUtils.copyProperties(e, vo);
		//返回
		return vo;
	}

	/**
	 * 删除
	 * @param id
	 */
	@Override
	public void delete(Integer id) {
		//id查角色
		Role er=roleDao.findbyid(id);
		//设置状态
		er.setRoState("1");
		//修改
		roleDao.update(er);
	}

	
	/**
	 * 批量删除
	 */
	@Override
	public void deleteAll(String ids) {
		// TODO Auto-generated method stub
		//得到数组
		String temp[] = ids.split(",");
		//循环
		for (int i = 0; i < temp.length; i++) {
			//得到字符串
			String id = temp[i];
			//p判断id
			if(StringUtils.isEmpty(id)) {
				//跳出此次。继续下次
				continue ;
			}
			//删除
			delete(Integer.valueOf(id));
		}
		
	}

}
